package collection;

import exception.CollectionEmptyException;

public interface ITree<N extends ATreeNode<E>, E>{
	
	public N createRoot(E element);
	
	public N createNode(E element);
	
	public int size();
	
	public boolean isEmpty();
	
	public N getRoot() throws CollectionEmptyException;
	
	public boolean isInternal(N someNode);
	
	public boolean isExternal(N someNode);
	
	public boolean isRoot(N someNode);
	
	public N getParent(N someNode);
	
	public Iterable<N> getChildren(N someNode);
	
	public E getElement(N someNode);
	
	public void setElement(N someNode, E element);
	
}
